function aaa(){
	var shortCutFunction = "success";
	var msg = "操作成功";
	toastr.options = {
		positionClass: "toast-top-center",	
		timeOut:1000
	};
	$("#toastrOptions").text("Command: toastr[" + shortCutFunction + ']("' + msg + '")\n\ntoastr.options = ' + JSON.stringify(toastr.options, null, 2));
	var $toast = toastr[shortCutFunction](msg);
	var $toastlast = $toast;
}

/**
 * 公共ajax函数
 * @param url
 * @param data
 * @param callback
 * @returns {String}
 */
function ajaxFunc(url, data, callback){
	var result = "";
	$.ajax({
		type : "post",
		url : encodeURI(encodeURI(url)),
		data : data,
		dataType : "html",
		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
		async: false,
		cache: false,
		success:function(response){
			result = response;
			//扩展回调函数
			if( callback != null ){
				callback(response);
			}
		}
	});
	return result;
}

function ajaxFuncConfirm(url, data, callback){
	var message = "确认删除?";
	if(_locale=='en_US'){
		message = "Are you sure you want to delete this?"
	}
	var confirm = $.scojs_confirm({
		  content: message,
		  action:function(){
			  ajaxFunc2(url, data, callback);
		    	this.close();
		    	// zhengshikang  2015/10/11  destroy确认框
		    	this.destroy();
			  }
	   });	
	confirm.show();
}
function ajaxFunc2(url, data, callback){
$.ajax({
    type : "post",
	url : encodeURI(encodeURI(url)),
    dataType :"json",
    data : data,
    success:function(resultData){   
    	debugger;
    	if(resultData){
    		if(resultData.code){
    			var span=$("#"+fileElementId+"-msgerror");
    			var errorlabel="<label id=\""+fileElementId+"-error\" class=\"error\" for=\""+fileElementId+"\">"+resultData.message+"</label>";
    			span.html(errorlabel);
    		}
    	}   
		//扩展回调函数
		if( callback != null ){
			callback(resultData);
		}
    },
});
}
/**
 * ajax提交form替换content
 * @param divId 返回替换div
 * @param formId 提交formid
 * @param callback 回调
 */
function ajaxForm(divId, formId, callback){
	
	$("#" + formId).ajaxSubmit({
		cache: false,
	    success:  function (data) {
	    	if(data != ""){
	    		$("#" + divId).html(data);
	    	}

			//扩展回调函数
			if( callback != null ){
				aaa();
			}
			$('#content').fadeIn();
	    }
	});
}




/**
 * ajax提交modal中的form替换div
 * @param modalId 提交的modalId
 * @param divId 返回替换div
 * @param formId 提交formid
 * @param callback 回调
 */
function ajaxModalForm(modalId,divId, formId, callback){
	$("#" + formId).ajaxSubmit({
		cache: false,
	    success:  function (data) {
	    	if(data != ""){
	    		$("#"  + modalId).modal('hide');
	    		$("#" + divId).html(data);
	    		
	    	}
			//扩展回调函数
			if( callback != null ){
				aaa();
			}
			$('#'+divId).fadeIn();
	    }
	});
}

/**
 * ajax请求url删除
 * @param url 请求地址
 * @param divId 返回替换div
 * @param data 参数
 * @param callback 回调
 */
function ajaxDelete(url, divId, data, callback){
	var message = "确认删除?";
	var confirm = $.scojs_confirm({
		  content: message,
		  action:function(){
			  this.close();
			  // zhengshikang  2015/10/11  destroy确认框
			  this.destroy();
		    	if(divId != ""&&divId){
		    		ajaxDiv(divId,url);
		    	}else{
		    		ajaxContent(url);
		    	}
			  }
	   });	
	confirm.show();
}

/**
 * ajax请求url替换指定div
 * @param shade 是否开启遮罩层
 * @param divId 返回替换div
 * @param url 请求地址
 * @param data 参数
 * @param callback 回调
 */
function ajaxDiv(divId, url, data, callback){
	$.ajax({
		type : "post",
		url : encodeURI(encodeURI(url)),
		data : data,
		dataType : "html",
		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
		async: false,
		cache: false,
		success:function(returnData){
			if(checkError(returnData)){
				//加载公用JS文档 sky 2015-8-4
				$("#" + divId).html(returnData);
				//扩展回调函数
				if( callback != null ){
					aaa();
				}
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert("request error！");
        },
        complete: function(XMLHttpRequest, textStatus) { 
        	
        }
	});
}

/**
 * ajax请求url替换div content
 * @param url 请求地址
 * @param data 参数
 * @param callback 回调
 */

function ajaxContent(url, data, callback){
	$.ajax({
		type : "post",
		url : encodeURI(encodeURI(url)),
		data : data,
		dataType : "html",
		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
		async: false,
		cache: false,
		success:function(returnData){
			if(checkError(returnData)){
				$('html, body').css("opacity","0.5").animate({scrollTop:0,opacity:1}, '1000');
				$("#content").html(returnData);
				//扩展回调函数
				if( callback != null ){
					
					aaa();
				}
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			// 这个方法有三个参数：XMLHttpRequest 对象，错误信息，（可能）捕获的错误对象。
			// 通常情况下textStatus和errorThown只有其中一个有值
			alert("request error！");
        },
        complete: function(XMLHttpRequest, textStatus) { 
        	// 请求完成后回调函数 (请求成功或失败时均调用)。参数： XMLHttpRequest 对象，成功信息字符串。
            // 调用本次AJAX请求时传递的options参数
	    	$('#loading').remove();
			$('#content').fadeIn();
        }
	});
}
/**
 * ajax请求url替换div
 * @param url 请求URL
 * @param data 请求参数数据
 * @param callback 回调
 */
function ajaxDivConfirm(divid,url, data, callback){
	var message = "确定要这样操作吗?";
	if(_locale=='en_US'){
		message = "Are you sure you want to do this?"
	}	
	var confirm = $.scojs_confirm({
		  content: message,
		  action:function(){
		    	ajaxDiv(divId, url, data, callback);
		    	this.close();
		    	// zhengshikang  2015/10/11  destroy确认框
		    	this.destroy();
			  }
	   });	
	confirm.show();	
}
/**
 * ajax请求url替换div content
 * @param url 请求URL
 * @param data 请求参数数据
 * @param callback 回调
 */
function ajaxContentConfirm(url, data, callback){
	var message = "确定要这样操作吗?";
	if(_locale=='en_US'){
		message = "Are you sure you want to do this?"
	}	
	var confirm = $.scojs_confirm({
		  content: message,
		  action:function(){
		    	ajaxContent(url, data, callback);
		    	this.close();
		    	// zhengshikang  2015/10/11  destroy确认框
		    	this.destroy();
			  }
	   });	
	confirm.show();	
}
/*
 * ajax提交form 
 * @param url 
 * @param data 提交data
 * @param callback 回调
 */
function ajaxDownload(url, data, callback){
	$.download(url,data);
}



/**
 * ajax请求url替换指定html
 * @param shade 是否开启遮罩层
 * @param divId 返回替换div
 * @param url 请求地址
 * @param data 参数
 * @param callback 回调
 */
function ajaxHtml(shade, ele, url, data, callback){
	if(shade){
		$('#content').fadeOut().parent().append('<div id="loading" class="center">Loading...<div class="center"></div></div>');
	}
	$.ajax({
		type : "get",
		url : encodeURI(encodeURI(url)),
		data : data,
		dataType : "html",
		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
		async: false,
		cache: false,
		success:function(returnData){console.log("1");
				ele.html(returnData); 
				//扩展回调函数
				if( callback != null ){
					aaa();
				}
				window._isload_ = returnData;
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) { 
				alert("request error！");
			}
		});
}

/**
 * ajax请求url替换指定html
 * @param shade 是否开启遮罩层
 * @param divId 返回替换div
 * @param url 请求地址
 * @param data 参数
 * @param callback 回调
 */
function ajaxAppendHtml(shade,ele, url, data, callback){
	if(shade){
		$('#content').fadeOut().parent().append('<div id="loading" class="center">Loading...<div class="center"></div></div>');
	}
	$.ajax({
		type : "get",
		url : encodeURI(encodeURI(url)),
		data : data,
		dataType : "html",
		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
		async: false,
		cache: false,
		success:function(returnData){console.log("ajaxAppendHtml");
			ele.append(returnData); 
			//扩展回调函数
			if( callback != null ){
				aaa();
			}
			window._isload_ = returnData;
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert("request error！");
		}
	});
}

/**
 * 提交form
 * @param formId 提交formid
 */
function postForm(formId){
	var form = $("#" + formId);
	
	if (typeof(formVali) != "undefined" && typeof(eval(formVali)) ==='function'){
		var errorCount = formVali(form[0]);
		if (errorCount != 0) {
			return false;
		}
	} 
	var action = form.attr("action");
	form.attr("action",action);
	form.submit();  
	return true;
}

function ajaxOnblurVali(element,url,data,callback,error){
	var element = $(element);
	if (data == undefined){
		data = element.attr("name") + "=" + element.val();
	}
	var inputDiv = element.parent();
	var errorDiv = inputDiv.next(".loginCon-inputError");
	var successDiv = inputDiv.next(".loginCon-inputOk");
	if (errorDiv[0]){
		errorDiv.remove();
		inputDiv.parents("li:eq(0)").removeClass("error");
	}
	if (successDiv[0]){
	  successDiv.remove();	
	  inputDiv.parents("li:eq(0)").removeClass("ok");
	}
	var result = onblurVali(element);
	if (result){
		$.ajax({
			type : "get",
			url : encodeURI(encodeURI(url)),
			data : data,
			dataType : "json",
			async: false,
			success:function(response){
			    if (response.error != undefined){
					var responseHtml = "<div class=\"loginCon-inputError\"><i class=\"i-icoError\"></i>" + response.error + "</div>";
					inputDiv.after(responseHtml);
					inputDiv.parents("li:eq(0)").addClass("error");
			    }else{
			    	var successHtml = "<div class=\"loginCon-inputOk\"><i class=\"i-icoOk\"></i></div>";
			    	inputDiv.after(successHtml);
			    	inputDiv.parents("li:eq(0)").addClass("ok");
			    }
				//扩展回调函数
				
				if( callback != null ){
					callback(response);
				}
		  },
			error : function(response){
				if( error != null ){
					error(response);
			  }
			}
		 });
    }
}

function validateAddSytle(element){
	var element = $(element);
	var inputDiv = element.parent();
	var errorDiv = inputDiv.next(".loginCon-inputError");
	var successDiv = inputDiv.next(".loginCon-inputOk");
	if (errorDiv[0]){
		errorDiv.remove();
		inputDiv.parents("li:eq(0)").removeClass("error");
	}
	if (successDiv[0]){
	  successDiv.remove();	
	  inputDiv.parents("li:eq(0)").removeClass("ok");
	} 
	var result = onblurVali(element);
	if (result){
		var successHtml = "<div class=\"loginCon-inputOk\"><i class=\"i-icoOk\"></i></div>";
		inputDiv.after(successHtml);
		inputDiv.parents("li:eq(0)").addClass("ok");
    }
} 
/**
 * @author shenyh
 * @param divId  返回的divId
 * @param toUrl  上传ajax片段
 * @param fileElementId  file标签的id
 * @param uploadFolder  上传的文件目录
 */
function ajaxFileUpload2(divId,fileElementId,toUrl,uploadFolder,uploadFiles,callback){
	$.ajaxFileUpload({
		url : encodeURI(encodeURI('/system/upload/ajaxUpload')),
		secureuri : false,
		fileElementId : fileElementId,// file标签的id
		dataType : 'html',// 返回数据的类型
		data : {	
			toUrl : toUrl, //上传ajax片段  必填
			uploadFiles : uploadFiles, //上传文件列表request key. 如不填 ，后台默认的request key为：uploadFile
			uploadFolder :  uploadFolder //上传文件目录
		},// 一同上传的数据
		success : function(data, status) {
		  $("#"+divId).html(data);
		//扩展回调函数
			if( callback != null ){
				aaa();
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert("request error！");
        },
        complete: function(XMLHttpRequest, textStatus) { 
        	
        }
	});
}



/**
 * @author shenyh
 * @param divId  返回的divId
 * @param toUrl  上传ajax片段
 * @param fileElementId  file标签的id
 * @param uploadFolder  上传的文件目录
 * @des  该方法只支持当个文件上传，直接把返回的html覆盖到divId中
 */
function ajaxFileUpload2(divId,fileElementId,toUrl,uploadFolder,uploadFiles,callback){
	uploadFiles = (typeof(uploadFiles)=="undefined") ? "" : uploadFiles;
	$.ajaxFileUpload({
		url : encodeURI(encodeURI('/system/upload/ajaxUpload')),
		secureuri : false,
		fileElementId : fileElementId,// file标签的id
		dataType : 'html',// 返回数据的类型
		data : {	
			toUrl : toUrl, //上传ajax片段  必填
			uploadFiles : uploadFiles, //上传文件列表request key. 如不填 ，后台默认的request key为：uploadFile
			uploadFolder :  uploadFolder //上传文件目录
		},// 一同上传的数据
		success : function(data, status) {
		  $("#"+divId).html(data);
		//扩展回调函数
			if( callback != null ){
				aaa();
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert("request error！");
        },
        complete: function(XMLHttpRequest, textStatus) { 
        	
        }
	});
}


/**
 * @author zhengshikang
 * @param divId  返回的divId
 * @param toUrl  上传ajax片段
 * @param fileElementId  file标签的id
 * @param uploadFolder  上传的文件目录
 * @des  该方法只支持多个文件上传，直接把返回的html追加到divId中； 使用该方法一般只需要传入前4个参数
 */
function ajaxMultiFileUpload(divId,fileElementId,toUrl,uploadFolder,uploadFiles,callback){
	uploadFiles = (typeof(uploadFiles)=="undefined") ? "" : uploadFiles;
	$.ajaxFileUpload({
		url : encodeURI(encodeURI('/admin/project/ajaxMultiUpload')),
		secureuri : false,
		fileElementId : fileElementId,// file标签的id
		dataType : 'html',// 返回数据的类型
		data : {	
			toUrl : toUrl, //上传ajax片段  必填
			uploadFiles : uploadFiles, //上传文件列表request key. 如不填 ，后台默认的request key为：uploadFile
			uploadFolder :  uploadFolder //上传文件目录
		},
		success : function(data, status) {
		  $("#"+divId).append(data);
		  //扩展回调函数
		  if(callback != null ){
			  aaa();
		  }
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert("request error！");
        },
        complete: function(XMLHttpRequest, textStatus) { 
        	
        }
	});
}

/**
 * 文件上传
 * @param url
 * @param divId
 * @param fileElementId
 * @param data
 * @param callback
 */
function ajaxFileUpload(url,divId,fileElementId,data,callback){
	$.ajaxFileUpload({
		url : encodeURI(encodeURI(url)),
		secureuri : false,
		fileElementId : fileElementId,// file标签的id
		dataType : 'html',// 返回数据的类型
		data : data,// 一同上传的数据
		success : function(data, status) {
		  $("#"+divId).html(data);
		//扩展回调函数
			if( callback != null ){
				aaa();
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert("request error！");
        },
        complete: function(XMLHttpRequest, textStatus) { 
        	
        }
	});
}

/**
 * @author chenqw
 * @param url
 * @param fileElementId
 * @param data
 */
function ajaxMultiFileUploadByProject(divId,fileElementId,data,callback){
	$.ajaxFileUpload({
		url : encodeURI(encodeURI('/admin/project/ajaxMultiUpload')),
		secureuri : false,
		fileElementId : fileElementId,// file标签的id
		dataType : 'html',// 返回数据的类型
		data : data,// 一同上传的数据
		success : function(data, status) {
		  $("#"+divId).append(data);
		   
		//扩展回调函数
			if( callback != null ){
				aaa();
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert("request error！");
        },
        complete: function(XMLHttpRequest, textStatus) { 
        	
        }
	});
}

/**
 * @author chenqw
 * @param url
 * @param fileElementId
 * @param data
 */
function ajaxMultiFileUpload(divId,fileElementId,data,callback){
	$.ajaxFileUpload({
		url : encodeURI(encodeURI('/system/upload/ajaxUpload')),
		secureuri : false,
		fileElementId : fileElementId,// file标签的id
		dataType : 'html',// 返回数据的类型
		data : data,// 一同上传的数据
		success : function(data, status) {
		  $("#"+divId).append(data);
		   
		//扩展回调函数
			if( callback != null ){
				aaa();
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) { 
			alert("request error！");
        },
        complete: function(XMLHttpRequest, textStatus) { 
        	
        }
	});
}
function checkError(data){
	//检查是否session过期
	var result = true;
	if(data){
		//如果返回的是字符串
		if((typeof data=='string')&&data.constructor==String){
			if(data.substring(0,30) == "{\"errorcode\":\"3333\",\"errormsg\""){
				var datajson = JSON.parse(data);
				aroundAlert(datajson.errormsg);
				result = false;
			}
		//如果返回的不是字符串
		}else if (data.errorcode && data.errorcode=="3333"){
			alert(returnData.errormsg);
			result = false;
		}
	}
	return result;
}
/**************************************		功能定制函数	end	***************************************************/